package demo28;

import java.util.ArrayList;
import java.util.List;

public class Test {
    public static void main(String[] args) {

    }

    /*
        haystack：主串
        needle：子串
     */
    public static int strStr(String haystack, String needle) {
        if(needle.length() == 0){
            return 0;
        }
        char[] father = haystack.toCharArray();
        char[] son = needle.toCharArray();
        List<Integer> indexs = new ArrayList<>();
        //循环找一下主串有多少是以子串开头字符相同的字符
        for (int i = 0; i < father.length-son.length+1; i++) {
            //father.length-son.length+1的意思是，移动到后面发现剩下的长度不够子串的长度，没必要比较
            if(father[i] == son[0]){
                //找到符合的字符，保存下标
                indexs.add(i);
            }
        }

        //根据indexs保存的符合的开头下标，对他们进行扫描
        for (int index : indexs) {
            boolean flag = true;
            for (int i = 0; i < son.length; i++) {
                if(son[i] != father[i+index]){
                    //不符合条件，主串与子串对应下标的字符不一致
                    flag = false;
                    break;
                }
            }
            //如果安全走完第二层循环，表示这个就是要找的子串
            if(flag)
            return index;
        }

        //循环走完都没有符合的情况，代表不存在，返回-1
        return -1;

    }
}
